// Copyright (C) 2023 即时通讯网(52im.net) & Jack Jiang.
// The RainbowChat Project. All rights reserved.
// 
// 【本产品为著作权产品，合法授权后请放心使用，禁止外传！】
// 【本次授权给：<北京小羊驼科技有限公司>，授权编号：<NT231212144350>，代码指纹：<A.702363430.550>，技术对接人微信：<ID: wxid_wbyootvkdcgj22>】
// 【授权寄送：<收件：苏先生、地址：北京市大兴区北京密码西区6号楼1单元301、电话：18613885610、邮箱：bd@huiyuanxiang-inc.com>】
// 
// 【本系列产品在国家版权局的著作权登记信息如下】：
// 1）国家版权局登记名(简称)和权证号：RainbowChat    （证书号：软著登字第1220494号、登记号：2016SR041877）
// 2）国家版权局登记名(简称)和权证号：RainbowChat-Web（证书号：软著登字第3743440号、登记号：2019SR0322683）
// 3）国家版权局登记名(简称)和权证号：RainbowAV      （证书号：软著登字第2262004号、登记号：2017SR676720）
// 4）国家版权局登记名(简称)和权证号：MobileIMSDK-Web（证书号：软著登字第2262073号、登记号：2017SR676789）
// 5）国家版权局登记名(简称)和权证号：MobileIMSDK    （证书号：软著登字第1220581号、登记号：2016SR041964）
// * 著作权所有人：江顺/苏州网际时代信息科技有限公司
// 
// 【违法或违规使用投诉和举报方式】：
// 联系邮件：jack.jiang@52im.net
// 联系微信：hellojackjiang
// 联系QQ号：413980957
// 授权说明：http://www.52im.net/thread-1115-1-1.html
// 官方社区：http://www.52im.net
package com.eva.framework.dto;

import com.eva.epc.common.util.ESerializable;

/**
 * 封装用户登陆时提交的数据的类.本类目前仅用于登陆验证时.
 *
 * @author Jack Jiang(http://www.52im.net/space-uid-1.html)
 * @version 1.0
 */
public class LoginInfo2 implements ESerializable
{
	/** 客户端设备类型：Android客户端 */
	public final static String OS_TYPE_ANDRIOD = "0";
	/** 客户端设备类型：iOS客户端 */
	public final static String OS_TYPE_IOS = "1";
	/** 客户端设备类型：Web客户端 */
	public final static String OS_TYPE_WEB = "2";

	/**
	 * 当客户端的APPKey与服务端允许的APPKey一致时，才允许许登录。
	 *
	 * @since 10.0
	 */
	private String appKey;

	/** 用户登陆名 */
	private String loginName;
	/** 客户端的版本号 */
	private String clientVersion = "";
	/** 该密码可能是加密后的字串 */
	private String loginPsw;
	/**
	 * 用于记录用户的登陆设备信息，比如手机登陆时的手机型号等
	 * （本字段主要用于信息记录和传递，非核心字段，可为null） */
	private String deviceInfo = null;
	/**
	 * 设备系统类型.
	 * <p>
	 * 当前约定：0-Android客户端，1-iOS客户端，2-Web客户端 .
	 * <p>
	 * <font color="#ff0000">注意：请尽量确保本字段的含义与 {@link LogoutInfo}中的osType字段相同。</font>
	 */
	private String osType = null;

	/**
	 * 设备标识码：用于唯一标识此设备的id.
	 * <p>
	 * 当 {@link #osType}=1时，本字段存放的是ios设备的device token，可用于服务端
	 * 实现向此ios设备的离线消息推送（通过苹果的APNs服务实现）。
	 */
	private String deviceID = null;

	public String getLoginName()
	{
		return loginName;
	}

	public void setLoginName(String loginName)
	{
		this.loginName = loginName;
	}

	public String getLoginPsw()
	{
		return loginPsw;
	}

	public void setLoginPsw(String loginPsw)
	{
		this.loginPsw = loginPsw;
	}

	public String getClientVersion()
	{
		return clientVersion;
	}

	public void setClientVersion(String clientVersion)
	{
		this.clientVersion = clientVersion;
	}

	public String getDeviceInfo()
	{
		return deviceInfo;
	}

	public void setDeviceInfo(String deviceInfo)
	{
		this.deviceInfo = deviceInfo;
	}

	public String getOsType()
	{
		return osType;
	}
	public void setOsType(String osType)
	{
		this.osType = osType;
	}

	public String getDeviceID()
	{
		return deviceID;
	}

	public void setDeviceID(String deviceID)
	{
		this.deviceID = deviceID;
	}

	/**
	 * 当前登陆信息是否是从Android设备上发出的。
	 *
	 * @return true表示是，否则不是
	 * @since 4.3
	 */
	public boolean isAndroid()
	{
		return LoginInfo2.OS_TYPE_ANDRIOD.equals(this.osType);
	}

	/**
	 * 当前登陆信息是否是从iOS设备上发出的。
	 *
	 * @return true表示是，否则不是
	 * @since 4.3
	 */
	public boolean isIOS()
	{
		return LoginInfo2.OS_TYPE_IOS.equals(this.osType);
	}

	/**
	 * 当前登陆信息是否是从Web端上发出的。
	 *
	 * @return true表示是，否则不是
	 * @since 4.3
	 */
	public boolean isWeb()
	{
		return LoginInfo2.OS_TYPE_WEB.equals(this.osType);
	}

	public String getAppKey() {
		return appKey;
	}

	public void setAppKey(String appKey) {
		this.appKey = appKey;
	}
}
